<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:zj="http://www.zju.edu.cn" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
  <xsl:import href="../Tk2Base/TransformData.xslt"/>
  <xsl:output method="xml" version="1.0" encoding="utf-8" indent="no"/>
  <xsl:template match="/">
    <xsl:variable name="zj:AllXmlData">
      <xsl:apply-templates select="Toolkit/zj:Module/zj:Resolvers/zj:Resolver[@List='true']" mode="zj:RawData"/>
    </xsl:variable>
    <xsl:variable name="zj:AllXmlNodeSet" select="msxsl:node-set($zj:AllXmlData)/zj:Table"/>
    <Toolkit xmlns:zj="http://www.zju.edu.cn" Desc="{Toolkit/zj:Module/zj:Title}" Module="{Toolkit/zj:Module/zj:DataSet}">
      <xsl:attribute name="Tables"><xsl:apply-templates select="$zj:AllXmlNodeSet" mode="zj:Table"/></xsl:attribute>
      <xsl:attribute name="Fields"><xsl:apply-templates select="$zj:AllXmlNodeSet/zj:Field[zj:Extension/@Search='title']" mode="zj:Field"/></xsl:attribute>
      <xsl:copy-of select="Toolkit/zj:Module/zj:TabSheets"/>
      <xsl:call-template name="ModuleNode"/>
      <xsl:apply-templates select="$zj:AllXmlNodeSet" mode="zj:Data"/>
    </Toolkit>
  </xsl:template>
  <xsl:template name="PaserXml">
    <xsl:param name="nodes"></xsl:param>
    <xsl:param name ="doc"></xsl:param>
    <xsl:variable name="TableName">
      <xsl:choose>
        <xsl:when test="@TableName">
          <xsl:value-of select="@TableName"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="$doc/@TableName"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
    <xsl:variable name="TableDesc">
      <xsl:choose>
        <xsl:when test="@TableDesc">
          <xsl:value-of select="@TableDesc"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="$doc/@TableDesc"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
    <xsl:variable name="zj:Relation" select="$zj:Relations[zj:DetailResolver=current()/zj:RegName]"/>
    <xsl:variable name="IdFields">
      <xsl:if test="count($zj:Relation) > 0">
        <xsl:value-of select="$zj:Relation/zj:DetailField"/>
      </xsl:if>
    </xsl:variable>
    <xsl:variable name="NewTable">
      <zj:Table TableName="{$TableName}" TableDesc="{$TableDesc}" Style="{@Style}" Main="{@Main}" SrcTableName="{$doc/@TableName}" KeyCount="{count($doc/zj:Field[boolean(@IsKey='true')])}" RegName="{zj:RegName}" XmlFile="{zj:Xml}" IdFields="{$IdFields}">
        <xsl:attribute name="Expand">
          <xsl:choose>
            <xsl:when test="@Expand='false'">false</xsl:when>
            <xsl:otherwise>true</xsl:otherwise>
          </xsl:choose>
        </xsl:attribute>
        <xsl:call-template name="zj:SetNewTableData">
          <xsl:with-param name="ResolverData" select="."/>
          <xsl:with-param name="TableData" select="$doc"/>
        </xsl:call-template>
        <xsl:copy-of select="zj:ListRefParams"/>
      </zj:Table>
    </xsl:variable>
    <xsl:apply-templates select="msxsl:node-set($NewTable)/zj:Table" mode="zj:RawData"/>
    
  </xsl:template>

  
  <xsl:template name="zj:Display">
    <xsl:param name="Data"/>
    <xsl:param name="Pos"/>
    <xsl:param name="Count"/>
    <List>
      <xsl:apply-templates select="$Data" mode="zj:Data"/>
    </List>
  </xsl:template>
  <xsl:template match="zj:Field" mode="zj:Field">
    <xsl:if test="position()!=1">,</xsl:if>
    <xsl:value-of select="zj:FieldName"/>
    <xsl:if test="zj:Extension/@Span='true'">,<xsl:value-of select="zj:FieldName"/>END</xsl:if>
    <xsl:if test="zj:EasySearch">,hd<xsl:value-of select="zj:FieldName"/>
    </xsl:if>
  </xsl:template>
  <xsl:template match="zj:Field" mode="zj:HtmlCtrl">
    <xsl:param name="HtmlCtrl"/>
    <xsl:param name="Style"/>
    <xsl:choose>
      <xsl:when test="$HtmlCtrl='Text' or $HtmlCtrl='Hidden' or $HtmlCtrl='Combo' or $HtmlCtrl='CheckBox' or $HtmlCtrl='EasySearch'">
        <xsl:value-of select="$HtmlCtrl"/>
      </xsl:when>
      <xsl:when test="$HtmlCtrl='Radio'">Combo</xsl:when>
      <xsl:when test="$HtmlCtrl='TextArea' or $HtmlCtrl='Password'">Text</xsl:when>
      <xsl:when test="$HtmlCtrl='CheckBoxList' or $HtmlCtrl='MultiSelect' or $HtmlCtrl='DetailMultiSelect'">DetailMultiSelect</xsl:when>
      <xsl:when test="$HtmlCtrl='HTML' or $HtmlCtrl='DetailHTML'">DetailHTML</xsl:when>
      <xsl:when test="$HtmlCtrl='Upload'">DetailUpload</xsl:when>
      <xsl:otherwise>Detail</xsl:otherwise>
    </xsl:choose>
  </xsl:template>
  <xsl:template name="zj:SetNewTableData">
    <xsl:param name="ResolverData"/>
    <xsl:param name="TableData"/>
    <xsl:variable name="OverrideInfo" select="$ResolverData/zj:ListAction"/>
    <xsl:variable name="OverrideFieldName" select="$OverrideInfo/Override/Field/@FieldName"/>
    <xsl:variable name="Fields" select="$TableData/zj:Field[zj:FieldName = $OverrideFieldName or zj:Display/@DefaultShow='All' or (contains(zj:Display/@DefaultShow, 'List') and zj:Display/@DefaultShow != 'AllNoList')]"/>
    <xsl:call-template name="zj:AddRawField">
      <xsl:with-param name="OverrideInfo" select="$OverrideInfo"/>
    </xsl:call-template>
    <xsl:apply-templates select="$Fields" mode="zj:RawData">
      <xsl:with-param name="OverrideInfo" select="$OverrideInfo"/>
      <xsl:with-param name="Fields" select="$Fields"/>
    </xsl:apply-templates>
    <xsl:variable name="Content" select="$TableData/zj:Field/zj:Upload[@Kind='File']/@Content"/>
    <xsl:variable name="FileSize" select="$TableData/zj:Field/zj:Upload/@FileSize"/>
    <xsl:apply-templates select="$TableData/zj:Field[zj:FieldName=$Content or zj:FieldName=$FileSize]" mode="zj:RawDataHidden"/>
  </xsl:template>
  <xsl:template match="zj:Field" mode="zj:RawDataHidden">
    <zj:Field>
      <xsl:copy-of select="@*"/>
      <zj:FieldName>
        <xsl:value-of select="zj:FieldName"/>
      </zj:FieldName>
      <zj:DisplayName>
        <xsl:value-of select="zj:DisplayName"/>
      </zj:DisplayName>
      <zj:Display/>
      <zj:HtmlCtrl HtmlCtrl="Hidden" Order="10"/>
    </zj:Field>
  </xsl:template>
  <xsl:template match="zj:Field" mode="zj:RawData">
    <xsl:param name="OverrideInfo"/>
    <xsl:param name="Fields"/>
    <xsl:variable name="FieldName" select="zj:FieldName"/>
    <xsl:choose>
      <xsl:when test="$OverrideInfo/Except/DelField[@FieldName=$FieldName]"/>
      <xsl:when test="$Fields/zj:Upload/@ContentField=$FieldName"/>
      <xsl:otherwise>
        <xsl:call-template name="DefaultRavData">
          <xsl:with-param name="OverrideInfo" select="$OverrideInfo"/>
          <xsl:with-param name="Fields" select="$Fields"/>
          <xsl:with-param name="FieldName" select="$FieldName"/>
        </xsl:call-template>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
  <xsl:template match="zj:Field" mode="zj:Data">
    <xsl:variable name="FieldName" select="zj:FieldName"/>
    <xsl:variable name="HtmlCtrl" select="zj:HtmlCtrl/@HtmlCtrl"/>
    <zj:Field>
      <xsl:copy-of select="@*"/>
      <xsl:copy-of select="zj:FieldName"/>
      <xsl:copy-of select="zj:DisplayName"/>
      <xsl:copy-of select="zj:Length"/>
      <xsl:copy-of select="zj:CodeTable"/>
      <xsl:copy-of select="zj:EasySearch"/>
      <zj:Display>
        <xsl:copy-of select="zj:Display/@*"/>
        <xsl:if test="@Kind != 'Data'">
          <xsl:attribute name="TextHead">true</xsl:attribute>
        </xsl:if>
        <xsl:variable name="DisablePage" select="contains($zj:Module/zj:Module/zj:DisablePage, 'Detail')"/>
        <xsl:if test="$DisablePage">
          <xsl:attribute name="ListRef">false</xsl:attribute>
        </xsl:if>
        <xsl:if test="zj:Display/Link or (zj:Display/@ListRef and not($DisablePage))">
          <xsl:variable name="RefType">
            <xsl:choose>
              <xsl:when test="zj:Display/@ListRef and zj:Display/@ListRef='true'">HREF</xsl:when>
              <xsl:otherwise>
                <xsl:call-template name="zj:HRefType">
                  <xsl:with-param name="Link" select="zj:Display/Link"/>
                </xsl:call-template>
              </xsl:otherwise>
            </xsl:choose>
          </xsl:variable>
          <Link HRefType="{$RefType}">
            <xsl:copy-of select="zj:Display/Link/@*"/>
            <xsl:copy-of select="zj:Display/Link"/>
          </Link>
        </xsl:if>
        <xsl:choose>
          <xsl:when test="@DataType='Date' and $HtmlCtrl='Text'">
            <Attribute Name="maxlength" Value="10"/>
          </xsl:when>
          <xsl:when test="@DataType='DateTime' and $HtmlCtrl='Text'">
            <Attribute Name="maxlength" Value="19"/>
          </xsl:when>
          <xsl:when test="$HtmlCtrl='EasySearch' ">
            <xsl:variable name="FastSearchParams" select="concat('&quot;', zj:EasySearch/@RegName, '&quot;, this.value, hd', zj:FieldName)"/>
            <Attribute Name="onkeydown" Value="if (event.keyCode == 9) DocOnClick();"/>
            <Attribute Name="onlosecapture" Value="floatdivflag = 1"/>
            <Attribute Name="onkeyup" Value="ListFastSearch({$FastSearchParams})"/>
            <Attribute Name="onfocus" Value="ListFastSearch2({$FastSearchParams})"/>
          </xsl:when>
          <xsl:when test="$HtmlCtrl='CheckBox'">
            <Attribute Name="style" Value="border:0"/>
          </xsl:when>
          <xsl:when test="$HtmlCtrl='Text' or $HtmlCtrl='TextArea'">
            <xsl:if test="zj:Length!=0">
              <Attribute Name="maxlength" Value="{zj:Length}"/>
            </xsl:if>
          </xsl:when>
        </xsl:choose>
        <xsl:copy-of select="zj:Display/Attribute"/>
      </zj:Display>
      <zj:Extension>
        <xsl:copy-of select="zj:Extension/@*"/>
        <xsl:if test="not(@ImgClick) and $HtmlCtrl='EasySearch'">
          <xsl:attribute name="ImgClick">openLookup1('../Pages/WebDialogSearch2Page.zjx?IdElementName=hd<xsl:value-of select="$FieldName"/>&amp;EditElementName=<xsl:value-of select="$FieldName"/>')</xsl:attribute>
        </xsl:if>
        <xsl:copy-of select="zj:Extension/*"/>
      </zj:Extension>
      <xsl:copy-of select="zj:HtmlCtrl"/>
      <xsl:copy-of select="zj:DefaultValue"/>
      <xsl:copy-of select="zj:Updating"/>
      <xsl:copy-of select="zj:Upload"/>
    </zj:Field>
  </xsl:template>
</xsl:stylesheet>
